home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-05-01 | 50.2 KB | 1,317 lines | [TEXT/MPS ] |
- ;
- ; File: FileManagerSPI.a
- ;
- ; Contains: FileManager extended interface
- ;
- ; Version: Technology: System 8
- ; Release: Universal Interfaces 3.0d3 on Copland DR1
- ;
- ; Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
- ;
- ; Bugs?: If you find a problem with this file, send the file and version
- ; information (from above) and the problem description to:
- ;
- ; Internet: apple.bugs@applelink.apple.com
- ; AppleLink: APPLE.BUGS
- ;
- ;
- IF &TYPE('__FILEMANAGERSPI__') = 'UNDEFINED' THEN
- __FILEMANAGERSPI__ SET 1
-
- IF &TYPE('__KERNEL__') = 'UNDEFINED' THEN
- include 'Kernel.a'
- ENDIF
- IF &TYPE('__FILEMANAGERTYPES__') = 'UNDEFINED' THEN
- include 'FileManagerTypes.a'
- ENDIF
- IF &TYPE('__FILES__') = 'UNDEFINED' THEN
- include 'Files.a'
- ENDIF
- ; You can use FileManager.h or FileManagerSPI.h, but not both
- IF &TYPE('__FILEMANAGER__') = 'UNDEFINED' THEN
- IF FOR_SYSTEM8_PREEMPTIVE THEN
- ; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C O N T A I N E R S <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- ;
- ;****************************************************************************
- ; OBJECTS
- ;****************************************************************************
- ;
- ;
- ; Function: FSObjectRefClone
- ; Purpose: Return a copy of an FSObjectRef such that the copy also needs to be disposed.
- ; Inputs:
- ; object_t The object ref to be cloned.
- ; Outputs:
- ; clone_o Copy of object_t.
- ; Notes:
- ; The value returned is the same value passed as input in object_t. This call
- ; would typically be used to balance a future call to FSObjectRefDispose. Some
- ; examples where it might be used:
- ; • A called procedure needs to save an FSObjectRef for future use, but the
- ; calling conventions dictate that the caller is responsible for disposing
- ; of the ref. The called function could call FSObjectRefClone to make its
- ; copy. The caller can safely dispose of the ref, yet the callee can use
- ; the ref until doing its own dispose.
- ; • In object-oriented programming, an object could be passed an FSObjectRef
- ; in its constructor. The destructor would be expected to dispose the ref,
- ; but so would the routine that created the object. FSObjectRefClone could
- ; be used in the constructor.
- ;
- ; The returned FSObjectRef is registered to the calling process (as must object_t).
- ;
- ;
- ; extern OSStatus FSObjectRefClone(FSObjectRef object_t, FSObjectRef *clone_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefClone
- ENDIF
-
- ;
- ; extern OSStatus FSObjectRefCloneAsync(FSObjectRef object_t, const KernelNotification *completion_i, FSObjectRef *clone_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefCloneAsync
- ENDIF
-
- ;
- ; Function: FSObjectRefDispose
- ; Purpose: Dispose of an FSObjectRef previously returned to a process.
- ; Inputs:
- ; object_t The object ref to be disposed.
- ; Outputs:
- ; Notes:
- ; A process must dispose of all FSObjectRefs returned to it. The FSObjectRefs
- ; may be returned as explicit output parameters, or as properties. If a ref
- ; is returned several times for a given object, it must be disposed for each
- ; time it was returned.
- ;
- ; When all refs to a given object are disposed, the File Manager will dispose
- ; of any resources it allocated in order to operate on that object. All refs
- ; for a process will be automatically disposed upon process termination.
- ;
- ; For refs returned as properties (especially when iterating over muliple
- ; objects), the FSObjectRefDisposeBulk call may be more convenient.
- ;
- ;
- ; extern OSStatus FSObjectRefDispose(FSObjectRef object_t)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefDispose
- ENDIF
-
- ;
- ; extern OSStatus FSObjectRefDisposeAsync(FSObjectRef object_t, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefDisposeAsync
- ENDIF
-
- ;
- ; Function: FSObjectRefDisposeBulk
- ; Purpose: Dispose of many FSObjectRefs, using a list of property descriptors.
- ; (Typically used to dispose all refs returned by FSObjectIterate).
- ; Inputs:
- ; objectCount_i Number of objects returned by FSObjectIterate.
- ; propertyCount_i Number of properties per object, as passed to FSObjectIterate.
- ; statusBuffer_i Status buffer as returned by FSObjectIterate.
- ; properties_i List of property descriptors passed to FSObjectIterate.
- ; propertiesBuffer_i Buffer where property values were returned by FSObjectIterate.
- ; Outputs:
- ; statusBuffer_o Error status for each property of each object.
- ; Notes:
- ; This call is intended to make it easy to dispose of FSObjectRefs returned by an
- ; FSObjectIterate call. You would pass the same property count, property descriptor
- ; list and property value buffer as was passed to FSObjectIterate. You also pass the
- ; object count and status buffer as returned by FSObjectIterate (since these tell which
- ; properties were actually returned).
- ;
- ; Any property in properties_i that does not contain an FSObjectRef is ignored. Any
- ; property that does not have E_NoError in its propertyStatus field (in statusBuffer_i)
- ; is ignored.
- ;
- ; All elements of statusBuffer_o will be set. If the property was ignored (as described
- ; above), then its propertyStatus is set to E_NoError; otherwise, it is set based on the
- ; attempt to dispose of the ref. The propertyValueActualSize fields are all set to 0.
- ;
- ;
- ;
- ; extern OSStatus FSObjectRefDisposeBulk(ItemCount objectCount_i, ItemCount propertyCount_i, const FSBufferDescriptor *statusBuffer_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, FSBufferDescriptor *statusBuffer_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefDisposeBulk
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectRefDisposeBulkAsync(ItemCount objectCount_i, ItemCount propertyCount_i, const FSBufferDescriptor *statusBuffer_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, const KernelNotification *completion_i, FSBufferDescriptor *statusBuffer_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefDisposeBulkAsync
- ENDIF
-
- ;
- ; Function: FSObjectRefRegister
- ; Purpose: Allow an FSObjectRef to be used by another process.
- ; Inputs:
- ; senderObject_t The object ref.
- ; receiverPid_i The other process that will be using senderObject_t.
- ; Outputs:
- ; Notes:
- ; This call allows one process to send an FSObjectRef to another process
- ; such that the other process can use the FSObjectRef itself. The process
- ; specified by receiverPid_i must also dispose of senderObject_t. The File
- ; Manager acts as if senderObject_t has been returned to receiverPid_i.
- ;
- ;
- ;
- ;
- ;
- ; You might use this call if you have several processes where one process
- ; (typically a server of some kind) obtains FSObjectRefs for use by other
- ; processes (typically clients of that server). If the other process (as
- ; specified by receiverPid_i) won't actually call the File Manager with
- ; that FSObjectRef, then it doesn't need to be registered to that process.
- ;
- ; It would also be possible to have the server process make all of the
- ; calls to the File Manager. FSObjectRefs could still be passed between
- ; client and server, but if the clients never use the refs directly, then
- ; there would be no need to register the refs to those clients. (But beware:
- ; the server would still be responsible for disposing of all refs returned to
- ; it; the server would probably have some cleanup and disposal to do if one
- ; of its client processes were to terminate.)
- ;
- ;
- ; extern OSStatus FSObjectRefRegister(FSObjectRef senderObject_t, KernelProcessID receiverPid_i)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefRegister
- ENDIF
-
- ;
- ; extern OSStatus FSObjectRefRegisterAsync(FSObjectRef senderObject_t, KernelProcessID receiverPid_i, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefRegisterAsync
- ENDIF
-
- ;
- ;============================================================================
- ; Volume Sets
- ;============================================================================
- ;
- ;
- ; Function: FSVolumeSetGetInformation
- ; Purpose: Returns an FSObjectRef for a Volume Set specified by an
- ; FSVolumeSetObjID.
- ; Inputs:
- ; volumeSet_t The volume set.
- ; Outputs:
- ; object_o Object ref for the volume set.
- ; includesBootVolume_o True if the volume set includes the boot volume.
- ; Notes:
- ; There is currently only one volume set. In the future there could be others
- ; (perhaps file servers; perhaps to support multiple local users).
- ;
- ;
- ; extern OSStatus FSVolumeSetGetInformation(FSVolumeSetObjID volumeSet_t, Boolean *includesBootVolume_o, FSObjectRef *object_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSVolumeSetGetInformation
- ENDIF
-
- ;
- ; extern OSStatus FSVolumeSetGetInformationAsync(FSVolumeSetObjID volumeSet_t, const KernelNotification *completion_i, Boolean *includesBootVolume_o, FSObjectRef *object_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSVolumeSetGetInformationAsync
- ENDIF
-
- ;
- ;============================================================================
- ; Volumes
- ;============================================================================
- ;
- ;
- ;
- ; extern OSStatus FSVolumeGetInformation(FSVolumeObjID volume_t, FSObjectRef *object_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSVolumeGetInformation
- ENDIF
-
- ;
- ; extern OSStatus FSVolumeGetInformationAsync(FSVolumeObjID volume_t, const KernelNotification *completion_i, FSObjectRef *objectRef_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSVolumeGetInformationAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSVolumeMount(ObjectID device_t, FSVolumeCapabilities requiredCapabilities_i, const FSMountAccessConstraints *constraints_i, FSObjectRef *volume_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSVolumeMount
- ENDIF
-
- ;
- ; extern OSStatus FSVolumeMountAsync(ObjectID device_t, FSVolumeCapabilities requiredCapabilities_i, const FSMountAccessConstraints *constraints_i, const KernelNotification *completion_i, FSObjectRef *volume_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSVolumeMountAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSVolumeUnmount(FSObjectRef volume_t)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSVolumeUnmount
- ENDIF
-
- ;
- ; extern OSStatus FSVolumeUnmountAsync(FSObjectRef volume_t, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSVolumeUnmountAsync
- ENDIF
-
- ;
- ;============================================================================
- ; Folders
- ;============================================================================
- ;
- ;
- ;
- ; extern OSStatus FSFolderCreateWithProperties(FSObjectRef container_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, FSBufferDescriptor *statusBuffer_o, FSObjectRef *folder_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSFolderCreateWithProperties
- ENDIF
-
- ;
- ; extern OSStatus FSFolderCreateWithPropertiesAsync(FSObjectRef container_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, const KernelNotification *completion_i, FSBufferDescriptor *statusBuffer_o, FSObjectRef *folder_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSFolderCreateWithPropertiesAsync
- ENDIF
-
- ;
- ;============================================================================
- ; Files
- ;============================================================================
- ;
- ;
- ;
- ; extern OSStatus FSFileCreateWithProperties(FSObjectRef container_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, FSBufferDescriptor *statusBuffer_o, FSObjectRef *file_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSFileCreateWithProperties
- ENDIF
-
- ;
- ; extern OSStatus FSFileCreateWithPropertiesAsync(FSObjectRef container_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, const KernelNotification *completion_i, FSBufferDescriptor *statusBuffer_o, FSObjectRef *file_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSFileCreateWithPropertiesAsync
- ENDIF
-
- ;
- ;============================================================================
- ; Folder and File Requests
- ;============================================================================
- ;
- ;
- ;
- ; extern OSStatus FSObjectCopy(FSObjectRef sourceObject_t, FSObjectRef container_i, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, FSBufferDescriptor *statusBuffer_o, FSObjectRef *newObject_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectCopy
- ENDIF
-
- ;
- ; extern OSStatus FSObjectCopyAsync(FSObjectRef sourceObject_t, FSObjectRef container_i, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, const KernelNotification *completion_i, FSBufferDescriptor *statusBuffer_o, FSObjectRef *newObject_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectCopyAsync
- ENDIF
-
- ;
- ; Function: FSObjectDelete
- ; Purpose: Deletes an object. The FSObjectRef is NOT disposed; you must still dispose it yourself.
- ; Further attempts to use the ref will return errors (such as E_ObjectNotFound).
- ;
- ; Inputs:
- ; object_t The object to be deleted.
- ; Outputs:
- ;
- ;
- ; extern OSStatus FSObjectDelete(FSObjectRef object_t)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectDelete
- ENDIF
-
- ;
- ; extern OSStatus FSObjectDeleteAsync(FSObjectRef object_t, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectDeleteAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectMove(FSObjectRef sourceObject_t, FSObjectRef container_i, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, FSBufferDescriptor *statusBuffer_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectMove
- ENDIF
-
- ;
- ; extern OSStatus FSObjectMoveAsync(FSObjectRef sourceObject_t, FSObjectRef container_i, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertyValues_i, const KernelNotification *completion_i, FSBufferDescriptor *statusBuffer_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectMoveAsync
- ENDIF
-
- ;
- ;****************************************************************************
- ; PROPERTIES
- ;****************************************************************************
- ;
- ;
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ; Object Properties
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ;
- ;
- ;
- ; extern OSStatus FSObjectCreateProperties(FSObjectRef object_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, FSBufferDescriptor *statusBuffer_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectCreateProperties
- ENDIF
-
- ;
- ; extern OSStatus FSObjectCreatePropertiesAsync(FSObjectRef object_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, const KernelNotification *completion_i, FSBufferDescriptor *statusBuffer_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectCreatePropertiesAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectDeleteProperties(FSObjectRef object_t, ItemCount propertyCount_i, const FSProperty properties_i[2147483647], FSBufferDescriptor *statusBuffer_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectDeleteProperties
- ENDIF
-
- ;
- ; extern OSStatus FSObjectDeletePropertiesAsync(FSObjectRef object_t, ItemCount propertyCount_i, const FSProperty properties_i[2147483647], const KernelNotification *completion_i, FSBufferDescriptor *statusBuffer_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectDeletePropertiesAsync
- ENDIF
-
- ; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C a p a b i l i t i e s <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- ;
- ;****************************************************************************
- ; PROPERTY ACCESS METHODS
- ;****************************************************************************
- ;
- ;
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ; Object Property Simple Values
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ;
- ;
- ;
- ; extern OSStatus FSObjectGetProperties(FSObjectRef object_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], FSBufferDescriptor *propertiesBuffer_o, FSBufferDescriptor *statusBuffer_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectGetProperties
- ENDIF
-
- ;
- ; extern OSStatus FSObjectGetPropertiesAsync(FSObjectRef object_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const KernelNotification *completion_i, FSBufferDescriptor *propertiesBuffer_o, FSBufferDescriptor *statusBuffer_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectGetPropertiesAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectSetProperties(FSObjectRef object_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, FSBufferDescriptor *statusBuffer_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectSetProperties
- ENDIF
-
- ;
- ; extern OSStatus FSObjectSetPropertiesAsync(FSObjectRef object_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const FSBufferDescriptor *propertiesBuffer_i, const KernelNotification *completion_i, FSBufferDescriptor *statusBuffer_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectSetPropertiesAsync
- ENDIF
-
- ;
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ; Object Property Fork Values
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ;
- ;
- ;============================================================================
- ; Stream-based Access Method
- ;============================================================================
- ;
- ;
- ;
- ; extern OSStatus FSStreamAllocate(FSStreamObjID stream_t, const FSForkPositionDescriptor *start_i, FSSize length_i, FSForkAllocationPolicy policy_i, FSSize *actualAllocation_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamAllocate
- ENDIF
-
- ;
- ; extern OSStatus FSStreamAllocateAsync(FSStreamObjID stream_t, const FSForkPositionDescriptor *start_i, FSSize length_i, FSForkAllocationPolicy policy_i, const KernelNotification *completion_i, FSSize *actualAllocation_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamAllocateAsync
- ENDIF
-
- ;
- ; Function: FSStreamClose
- ; Purpose: Close a stream previously opened with FSStreamOpen or FSStreamOpenWithConstraints.
- ; Inputs:
- ; stream_t The stream to close.
- ; Outputs:
- ; Notes:
- ; Any data written to the stream is flushed (written by the File Manager) before the
- ; stream is closed. The FSStreamObjID, stream_t, may no longer be used. Any resources
- ; allocated by the File Manager for use by this stream will be disposed.
- ;
- ;
- ; extern OSStatus FSStreamClose(FSStreamObjID stream_t)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamClose
- ENDIF
-
- ;
- ; extern OSStatus FSStreamCloseAsync(FSStreamObjID stream_t, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamCloseAsync
- ENDIF
-
- ;
- ; Function: FSStreamFlush
- ; Purpose: Any data written to the stream will be written by the File Manager.
- ; Inputs:
- ; stream_t The stream to flush.
- ; Outputs:
- ; Notes:
- ; Stream data may still reside in the File Manager's caches, but any changes will have
- ; been written out by the File Manager. Note that the underlying device's driver, or
- ; the device itself, may cache some data, so the File Manager cannot guarantee that
- ; all data has actually been written to the underlying media.
- ;
- ; Other information about the object (such as its modification date) might not be flushed
- ; by this call, though any volume-level data needed to access the stream will be.
- ;
- ;
- ;
- ;
- ; extern OSStatus FSStreamFlush(FSStreamObjID stream_t)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamFlush
- ENDIF
-
- ;
- ; extern OSStatus FSStreamFlushAsync(FSStreamObjID stream_t, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamFlushAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSStreamGetEOF(FSStreamObjID stream_t, FSOffset *currentEOF_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamGetEOF
- ENDIF
-
- ;
- ; extern OSStatus FSStreamGetEOFAsync(FSStreamObjID stream_t, const KernelNotification *completion_i, FSOffset *currentEOF_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamGetEOFAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSStreamGetInformation(FSStreamObjID stream_t, FSObjectRef *object_o, FSProperty *fork_o, FSForkAccessConstraints *constraints_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamGetInformation
- ENDIF
-
- ;
- ; extern OSStatus FSStreamGetInformationAsync(FSStreamObjID stream_t, const KernelNotification *completion_i, FSObjectRef *object_o, FSProperty *fork_o, FSForkAccessConstraints *constraints_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamGetInformationAsync
- ENDIF
-
- ;
- ; Function: FSStreamGetMark
- ; Purpose: Returns the current mark (position offset) for a stream.
- ; Inputs:
- ; stream_t The stream.
- ; Outputs:
- ; currentMark_o Current offset in the stream, stream_t.
- ; Notes:
- ; This call returns the offset from the start of the file that would be
- ; equivalent to using a FSForkPositionDescriptor whose positionOffset is
- ; 0, and whose positionMode is kFSFromMark. A stream's mark is set to
- ; the byte following the last read or write, or via FSStreamSetMark.
- ;
- ;
- ; extern OSStatus FSStreamGetMark(FSStreamObjID stream_t, FSOffset *currentMark_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamGetMark
- ENDIF
-
- ;
- ; extern OSStatus FSStreamGetMarkAsync(FSStreamObjID stream_t, const KernelNotification *completion_i, FSOffset *currentMark_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamGetMarkAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSStreamLockRange(FSStreamObjID stream_t, const FSForkPositionDescriptor *position_i, FSSize length_i, FSRangeLockOptions options_i, FSOffset *rangeStart_o, FSSize *actualLength_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamLockRange
- ENDIF
-
- ;
- ; extern OSStatus FSStreamLockRangeAsync(FSStreamObjID stream_t, const FSForkPositionDescriptor *position_i, FSSize length_i, FSRangeLockOptions options_i, const KernelNotification *completion_i, FSOffset *rangeStart_o, FSSize *actualLength_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamLockRangeAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSStreamOpenWithConstraints(FSObjectRef object_t, const FSProperty *fork_i, const FSForkAccessConstraints *constraints_i, FSStreamObjID *stream_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamOpenWithConstraints
- ENDIF
-
- ;
- ; extern OSStatus FSStreamOpenWithConstraintsAsync(FSObjectRef object_t, const FSProperty *fork_i, const FSForkAccessConstraints *constraints_i, const KernelNotification *completion_i, FSStreamObjID *stream_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamOpenWithConstraintsAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSStreamRead(FSStreamObjID stream_t, const FSForkPositionDescriptor *position_i, FSStreamIOOptions options_i, FSBufferDescriptor *buffer_o, ByteCount *actualLength_o, FSOffset *currentMark_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamRead
- ENDIF
-
- ;
- ; extern OSStatus FSStreamReadAsync(FSStreamObjID stream_t, const FSForkPositionDescriptor *position_i, FSStreamIOOptions options_i, const KernelNotification *completion_i, FSBufferDescriptor *buffer_o, ByteCount *actualLength_o, FSOffset *currentMark_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamReadAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSStreamReleaseAllocation(FSStreamObjID stream_t, const FSForkPositionDescriptor *start_i, FSSize length_i, FSSize *actualLength_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamReleaseAllocation
- ENDIF
-
- ;
- ; extern OSStatus FSStreamReleaseAllocationAsync(FSStreamObjID stream_t, const FSForkPositionDescriptor *start_i, FSSize length_i, const KernelNotification *completion_i, FSSize *actualLength_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamReleaseAllocationAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSStreamSetEOF(FSStreamObjID stream_t, const FSForkPositionDescriptor *EOF_i, FSForkAllocationPolicy policy_i, FSOffset *currentEOF_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamSetEOF
- ENDIF
-
- ;
- ; extern OSStatus FSStreamSetEOFAsync(FSStreamObjID stream_t, const FSForkPositionDescriptor *EOF_i, FSForkAllocationPolicy policy_i, const KernelNotification *completion_i, FSOffset *currentEOF_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamSetEOFAsync
- ENDIF
-
- ;
- ; Function: FSStreamSetMark
- ; Purpose: Sets the current mark (position offset) for a stream.
- ; Inputs:
- ; stream_t The stream.
- ; newPosition_i The new position of the stream's mark.
- ; options_i
- ; Outputs:
- ; originalMark_o The stream's mark, before being changed (relative
- ; to the start of the stream).
- ; currentMark_o The new mark, relative to the start of the stream.
- ; Notes:
- ; A stream's mark is usually used for sequential access to a stream,
- ; or to position relative to the ending position of the last operation
- ; on a stream. This call lets you explicitly set the mark for future
- ; operations that will operate relative to the current mark.
- ;
- ; If kFSMarkPinToEOF is set in options_i, and the new position specified
- ; by newPosition_i would exceed the current end of the stream (also known
- ; as End Of File or EOF), then the mark will be set to the EOF and E_NoError
- ; is returned. Otherwise, an error will returned. The mark may never be
- ; set past the end of the stream.
- ;
- ;
- ;
- ;
- ; extern OSStatus FSStreamSetMark(FSStreamObjID stream_t, const FSForkPositionDescriptor *newPosition_i, FSStreamSetMarkOptions options_i, FSOffset *originalMark_o, FSOffset *currentMark_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamSetMark
- ENDIF
-
- ;
- ; extern OSStatus FSStreamSetMarkAsync(FSStreamObjID stream_t, const FSForkPositionDescriptor *newPosition_i, FSStreamSetMarkOptions options_i, const KernelNotification *completion_i, FSOffset *originalMark_o, FSOffset *currentMark_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamSetMarkAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSStreamUnlockRange(FSStreamObjID stream_t, const FSForkPositionDescriptor *position_i, FSSize length_i, FSRangeLockOptions options_i)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamUnlockRange
- ENDIF
-
- ;
- ; extern OSStatus FSStreamUnlockRangeAsync(FSStreamObjID stream_t, const FSForkPositionDescriptor *position_i, FSSize length_i, FSRangeLockOptions options_i, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamUnlockRangeAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSStreamWrite(FSStreamObjID stream_t, const FSForkPositionDescriptor *position_i, FSStreamIOOptions options_i, const FSBufferDescriptor *buffer_i, ByteCount *actualLength_o, FSOffset *currentMark_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamWrite
- ENDIF
-
- ;
- ; extern OSStatus FSStreamWriteAsync(FSStreamObjID stream_t, const FSForkPositionDescriptor *position_i, FSStreamIOOptions options_i, const FSBufferDescriptor *buffer_i, const KernelNotification *completion_i, ByteCount *actualLength_o, FSOffset *currentMark_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSStreamWriteAsync
- ENDIF
-
- ;
- ;============================================================================
- ; Memory-mapped Access Method(Backing Store Requests)
- ;============================================================================
- ;
- ;
- ; Function: FSMappedFileClose
- ; Purpose: Closes an access path to a file used for backing store.
- ; Inputs:
- ; backingStore_t The backing store object.
- ; Outputs:
- ; Notes:
- ; Basically the same as FSStreamClose, but for a backing store.
- ;
- ; All data written to this backing store (by writing to pages backed by
- ; this store) will be flushed (written) by the File Manager.
- ;
- ;
- ; extern OSStatus FSMappedFileClose(FSBackingStoreObjID backingStore_t)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileClose
- ENDIF
-
- ;
- ; extern OSStatus FSMappedFileCloseAsync(FSBackingStoreObjID backingStore_t, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileCloseAsync
- ENDIF
-
- ;
- ; Function: FSMappedFileGetEOF
- ; Purpose: Return the EOF (length) of the fork being accessed by the given backing store.
- ; Inputs:
- ; backingStore_t The backing store used to access the fork.
- ; Outputs:
- ; currentEOF_o The size, in bytes, of the fork.
- ; Notes:
- ; Since access to a fork via a backing store (i.e. memory mapped file access) is
- ; accomplished by directly accessing memory pages, the virtual memory system must
- ; read and write entire pages. If the last page is modified, the entire page is
- ; written, resulting in the fork size being rounded up to a multiple of a page size.
- ; Similarly for access to pages beyond the fork's EOF.
- ;
- ; This call returns the current EOF (length) of the underlying fork. This may be
- ; set implicitly by writing to backed pages, or by using the FSBackingStoreSetEOF
- ; call. It may also be changed by streams opened to the same fork.
- ;
- ;
- ; extern OSStatus FSMappedFileGetEOF(FSBackingStoreObjID backingStore_t, FSOffset *currentEOF_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileGetEOF
- ENDIF
-
- ;
- ; extern OSStatus FSMappedFileGetEOFAsync(FSBackingStoreObjID backingStore_t, const KernelNotification *completion_i, FSOffset *currentEOF_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileGetEOFAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSMappedFileGetInformation(FSBackingStoreObjID backingStore_t, FSObjectRef *object_o, FSProperty *fork_o, FSForkAccessConstraints *constraints_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileGetInformation
- ENDIF
-
- ;
- ; extern OSStatus FSMappedFileGetInformationAsync(FSBackingStoreObjID backingStore_t, const KernelNotification *completion_i, FSObjectRef *object_o, FSProperty *fork_o, FSForkAccessConstraints *constraints_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileGetInformationAsync
- ENDIF
-
- ;
- ; Function: FSMappedFileSetEOF
- ; Purpose: Sets the EOF (length) of the fork being accessed by the given backing store.
- ; Inputs:
- ; backingStore_t The backing store used to access the fork.
- ; EOF_i The new length (EOF) of the fork.
- ; policy_i Controls how space should be allocated (if the new EOF
- ; is larger than the current EOF).
- ; Outputs:
- ; currentEOF_o The new size, in bytes, of the fork.
- ; Notes:
- ; Since access to a fork via a backing store (i.e. memory mapped file access) is
- ; accomplished by directly accessing memory pages, the virtual memory system must
- ; read and write entire pages. If the last page is modified, the entire page is
- ; written, resulting in the fork size being rounded up to a multiple of a page size.
- ; Similarly for access to pages beyond the fork's EOF.
- ;
- ; This call allows the EOF to be explicitly set for a fork being accessed via a
- ; backing store. Any data beyond the EOF will not actually be written to the fork.
- ; The File Manager has no way to detect whether access to pages occurs beyond the
- ; EOF; it is a programming error to access bytes beyond the EOF via a backing store.
- ;
- ; This call would typically be used when a fork has been memory mapped to enable
- ; convenient access to a file's data structures as if it were completely in memory.
- ; You would make all changes to the data structures, then use this call to indicate
- ; the number of bytes that are valid and should be written to the fork.
- ;
- ;
- ; extern OSStatus FSMappedFileSetEOF(FSBackingStoreObjID backingStore_t, const FSForkPositionDescriptor *EOF_i, FSForkAllocationPolicy policy_i, FSOffset *currentEOF_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileSetEOF
- ENDIF
-
- ;
- ; extern OSStatus FSMappedFileSetEOFAsync(FSBackingStoreObjID backingStore_t, const FSForkPositionDescriptor *EOF_i, FSForkAllocationPolicy policy_i, const KernelNotification *completion_i, FSOffset *currentEOF_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileSetEOFAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSMappedFileOpenWithConstraints(FSObjectRef object_t, const FSProperty *fork_i, const FSForkAccessConstraints *constraints_i, FSBackingStoreObjID *backingStore_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileOpenWithConstraints
- ENDIF
-
- ;
- ; extern OSStatus FSMappedFileOpenWithConstraintsAsync(FSObjectRef object_t, const FSProperty *fork_i, const FSForkAccessConstraints *constraints_i, const KernelNotification *completion_i, FSBackingStoreObjID *backingStore_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSMappedFileOpenWithConstraintsAsync
- ENDIF
-
- ;
- ;****************************************************************************
- ; NAVIGATION & ENUMERATION
- ;****************************************************************************
- ;
- ;
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ; Object Iteration
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ;
- ;
- ;
- ; extern OSStatus FSObjectIterate(FSObjectIteratorObjID iterator_t, ItemCount objectCount_i, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], ItemCount *actualObjectCount_o, FSBufferDescriptor *propertiesBuffer_o, FSBufferDescriptor *statusBuffer_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIterate
- ENDIF
-
- ;
- ; extern OSStatus FSObjectIterateAsync(FSObjectIteratorObjID iterator_t, ItemCount objectCount_i, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], const KernelNotification *completion_i, ItemCount *actualObjectCount_o, FSBufferDescriptor *propertiesBuffer_o, FSBufferDescriptor *statusBuffer_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIterateAsync
- ENDIF
-
- ;
- ; Function: FSObjectIteratorChangeCurrentScope
- ; Purpose: Move an object iterator into or out of a container.
- ; Inputs:
- ; iterator_t The object iterator.
- ; movement_i The direction to move: into or out of a container.
- ; Outputs:
- ; Notes:
- ; If movement_i is kFSObjectEnter, then the iterator must be positioned on
- ; an object that is capable of containing other objects; it does not need to
- ; actually contain any objects at that time. That object will become the new
- ; current scope of the iterator and it will be in Start Of Iteration state
- ; (meaning that all objects in the current scope have yet to be returned).
- ; The iterator will not be positioned on any object.
- ;
- ; If movement_i is kFSObjectExit, then the current scope will become the object
- ; that contains the current scope; the iterator's new position will be the object
- ; that was the current scope. If the current scope and the outermost scope were
- ; the same, then the outermost scope will also change to the new current scope and
- ; E_ExitIteratorScope is returned (so that you realize you will be iterating outside
- ; of the scope that you used to create the iterator; the iterator remains usable).
- ;
- ; Object iterators keep track of all of the objects between the outermost scope and
- ; the current scope (this is known as the "scope stack"). If any object in the scope
- ; stack is moved, the iterator is invalidated and will return the error
- ; E_IteratorScopeException until it has been explicitly fixed (by FSObjectIteratorRecreate)
- ; or disposed. This call adds or removes objects from the scope stack.
- ;
- ;
- ; extern OSStatus FSObjectIteratorChangeCurrentScope(FSObjectIteratorObjID iterator_t, FSObjectIteratorMovement movement_i)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorChangeCurrentScope
- ENDIF
-
- ;
- ; extern OSStatus FSObjectIteratorChangeCurrentScopeAsync(FSObjectIteratorObjID iterator_t, FSObjectIteratorMovement movement_i, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorChangeCurrentScopeAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectIteratorClone(FSObjectIteratorObjID iterator_t, FSObjectIteratorObjID *clone_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorClone
- ENDIF
-
- ;
- ; extern OSStatus FSObjectIteratorCloneAsync(FSObjectIteratorObjID iterator_t, const KernelNotification *completion_i, FSObjectIteratorObjID *clone_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorCloneAsync
- ENDIF
-
- ;
- ; Function: FSObjectIteratorCreate
- ; Purpose: Create an iterator for iterating over objects.
- ; Inputs:
- ; outermostScope_t The initial outermost scope and current scope.
- ; options_i Controls whether the iterator will traverse objects in
- ; a single container or all embedded (nested) containers.
- ; Also controls which kinds of objects will be returned.
- ; Outputs:
- ; iterator_o The object iterator.
- ; Notes:
- ; The outermost scope and current scope of the iterator are set to outermostScope_t.
- ; The iterator is not positioned on any object, though it is inside outermostScope_t.
- ; OutermostScope_t must be an object capable of containing other objects (such as the
- ; Universe, a volume set, a volume, or a folder). The iterator is put into "Start Of
- ; Iteration" state, meaning that all objects in the current scope have yet to be
- ; returned.
- ;
- ; The File Manager allocates resources and maintains state for every iterator. When
- ; you have finished using an iterator, you should call FSObjectIteratorDispose to dispose
- ; of it.
- ;
- ;
- ; extern OSStatus FSObjectIteratorCreate(FSObjectRef outermostScope_t, FSObjectIteratorCreationOptions options_i, FSObjectIteratorObjID *iterator_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorCreate
- ENDIF
-
- ;
- ; extern OSStatus FSObjectIteratorCreateAsync(FSObjectRef outermostScope_t, FSObjectIteratorCreationOptions options_i, const KernelNotification *completion_i, FSObjectIteratorObjID *iterator_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorCreateAsync
- ENDIF
-
- ;
- ; Function: FSObjectIteratorDispose
- ; Purpose: Dispose of an object iterator.
- ; Inputs:
- ; iterator_t The object iterator.
- ; Outputs:
- ; Notes:
- ; The File Manager will dispose of the iterator and release any resources
- ; allocated to the iterator. Further attempts to use the iterator will result
- ; in an error.
- ;
- ;
- ;
- ;
- ; extern OSStatus FSObjectIteratorDispose(FSObjectIteratorObjID iterator_t)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorDispose
- ENDIF
-
- ;
- ; extern OSStatus FSObjectIteratorDisposeAsync(FSObjectIteratorObjID iterator_t, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorDisposeAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectIteratorGetInformation(FSObjectIteratorObjID iterator_t, FSObjectRef *outermostScope_o, FSObjectRef *currentScope_o, FSObjectIteratorCreationOptions *options_o, FSObjectIteratorState *state_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorGetInformation
- ENDIF
-
- ;
- ; extern OSStatus FSObjectIteratorGetInformationAsync(FSObjectIteratorObjID iterator_t, const KernelNotification *completion_i, FSObjectRef *outermostScope_o, FSObjectRef *currentScope_o, FSObjectIteratorCreationOptions *options_o, FSObjectIteratorState *state_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorGetInformationAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectIteratorRecreate(FSObjectIteratorObjID iterator_t, FSObjectRef outermostScope_i, Boolean preserveCurrentOptions_i, FSObjectIteratorCreationOptions options_i)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorRecreate
- ENDIF
-
- ;
- ; extern OSStatus FSObjectIteratorRecreateAsync(FSObjectIteratorObjID iterator_t, FSObjectRef outermostScope_i, Boolean preserveCurrentOptions_i, FSObjectIteratorCreationOptions options_i, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorRecreateAsync
- ENDIF
-
- ;
- ; Function: FSObjectIteratorRestart
- ; Purpose: Place an object iterator in the Start Of Iterator state, in its current scope.
- ; Inputs:
- ; iterator_t The object iterator.
- ; Outputs:
- ; Notes:
- ; The iterator is not positioned on any object. The iterator is put into "Start Of
- ; Iteration" state, meaning that all objects in the current scope have yet to be
- ; returned.
- ;
- ; You would use this call to completely restart iteration within the current scope,
- ; ignoring any state about objects previously returned in the current scope. The
- ; outermost scope is not affected. State information about which objects have been
- ; returned from scopes outside the current scope is unchanged.
- ;
- ;
- ; extern OSStatus FSObjectIteratorRestart(FSObjectIteratorObjID iterator_t)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorRestart
- ENDIF
-
- ;
- ; extern OSStatus FSObjectIteratorRestartAsync(FSObjectIteratorObjID iterator_t, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectIteratorRestartAsync
- ENDIF
-
- ;
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ; Object Resolution
- ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- ;
- ;
- ; Function: FSObjectExchange
- ; Purpose: Exchange the properties of two objects. Typically used for "safe
- ; saving", while maintaining an object's persistent reference.
- ; Inputs:
- ; object1_i One object.
- ; object2_i The object to exchange it with.
- ; Outputs:
- ; Notes:
- ; This call is used to allow a "safe save" that preserves an object's
- ; persistent reference. For example, you might want to save an updated
- ; set of properties to an object so that any errors while saving result
- ; in the object being unchanged; but, you also want the object's persistent
- ; reference to remain unchanged (so that things like aliases still work).
- ;
- ; What you would do is create a second object somewhere (in a temporary
- ; folder, for example). Write out all of the properties, both unchanged
- ; and changed, to the second object. When done saving, you would call
- ; FSObjectExchange with both objects; the contents of the two objects get
- ; swapped in such a way that the original object has the new properties,
- ; but retains its old persistent reference.
- ;
- ;
- ;
- ;
- ; extern OSStatus FSObjectExchange(FSObjectRef object1_i, FSObjectRef object2_i)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectExchange
- ENDIF
-
- ;
- ; extern OSStatus FSObjectExchangeAsync(FSObjectRef object1_i, FSObjectRef object2_i, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectExchangeAsync
- ENDIF
-
- ;
- ; Function: FSObjectRefGetFSSpec
- ; Purpose: Return an FSSpec for an object (suitable for use with the Files API).
- ; Inputs:
- ; object_t The object.
- ; Outputs:
- ; fSSpec_o An FSSpec that specifies the same object as object_t,
- ; suitable for use with the Files API.
- ; Notes:
- ; This call is intended to be used by code that is required to use both the
- ; Files API and the FileManager API (or has clients that use both APIs).
- ; For example, a piece of code may already exist with an API that uses FSSpecs,
- ; but has been converted internally to use the FSObjectRefs; it would use this
- ; call to produce an FSSpec as an output for the pre-existing API.
- ;
- ; It would be best to provide an API that allows its clients to use FSObjectRefs.
- ;
- ;
- ; extern OSStatus FSObjectRefGetFSSpec(FSObjectRef object_t, FSSpec *fSSpec_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefGetFSSpec
- ENDIF
-
- ;
- ; extern OSStatus FSObjectRefGetFSSpecAsync(FSObjectRef object_t, const KernelNotification *completion_i, FSSpec *fSSpec_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefGetFSSpecAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectLocate(FSObjectRef container_t, ItemCount elementCount_i, const FSObjectPathwayElement pathway_i[2147483647], const FSBufferDescriptor *pathwayPropertiesBuffer_i, FSObjectRef *object_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectLocate
- ENDIF
-
- ;
- ; extern OSStatus FSObjectLocateAsync(FSObjectRef container_t, ItemCount elementCount_i, const FSObjectPathwayElement pathway_i[2147483647], const FSBufferDescriptor *pathwayPropertiesBuffer_i, const KernelNotification *completion_i, FSObjectRef *object_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectLocateAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectPersistentReferenceResolve(FSVolumeObjID volume_t, const FSObjectPersistentReference *persistentReference_i, FSObjectRef *object_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectPersistentReferenceResolve
- ENDIF
-
- ;
- ; extern OSStatus FSObjectPersistentReferenceResolveAsync(FSVolumeObjID volume_t, const FSObjectPersistentReference *persistentReference_i, const KernelNotification *completion_i, FSObjectRef *object_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectPersistentReferenceResolveAsync
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectRefResolve(FSObjectRef object_t, FSVolumeObjID *objectsVolume_o, FSVolumeSetObjID *objectsVolumeSet_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefResolve
- ENDIF
-
- ;
- ; extern OSStatus FSObjectRefResolveAsync(FSObjectRef object_t, const KernelNotification *completion_i, FSVolumeObjID *objectsVolume_o, FSVolumeSetObjID *objectsVolumeSet_o, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectRefResolveAsync
- ENDIF
-
- ;
- ; Function: FSSpecGetFSObjectRef
- ; Purpose: Return an FSObjectRef for an object specified via an FSSpec.
- ; Inputs:
- ; theFSSpec_t An FSSpec for the object.
- ; Outputs:
- ; theObject_o An FSObjectRef for the object.
- ; Notes:
- ; This call is intended to be used by code that is required to use both the
- ; Files API and the FileManager API (or has clients that use both APIs).
- ; For example, a piece of code may already exist with an API that uses FSSpecs,
- ; but has been converted internally to use the FSObjectRefs; it would use this
- ; call to take an input FSSpec and convert it to an FSObjectRef to use internally;
- ; the FSObjectRef would then be disposed before completing the call.
- ;
- ; It would be best to provide an API that allows its clients to use FSObjectRefs.
- ;
- ;
- ; extern OSStatus FSSpecGetFSObjectRef(const FSSpec *theFSSpec_t, FSObjectRef *theObject_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSSpecGetFSObjectRef
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSUniverseResolve(FSObjectRef *theUniverse_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSUniverseResolve
- ENDIF
-
- ;
- ; extern OSStatus FSUniverseResolveAsync(FSObjectRef *theUniverse_o, const KernelNotification *theCompletion_i, MessageID *theRequestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSUniverseResolveAsync
- ENDIF
-
- ; >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> F a c i l i t i e s <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- ;
- ;============================================================================
- ; Cache Flush Routines
- ;============================================================================
- ;
- ;
- ; Function: FSObjectFlush
- ; Purpose: Flushes any data cached by the File Manager for the given object.
- ; Inputs:
- ; object_t The object to be flushed.
- ; Outputs:
- ; Notes:
- ; If object_t is a file, then any data written to that file (via a stream or backing store,
- ; regardless of the process that opened the stream or backing store) will be written by the
- ; File Manager to any underlying device. If object_t is a volume, then any data written to
- ; any file on that volume will be flushed.
- ;
- ; Any change to properties of object_t will be flushed (regardless of the object's type).
- ;
- ; Data about the object (or contained in the object) may still reside in the File Manager's
- ; caches, but any changes will have been written out by the File Manager. Note that the
- ; underlying device's driver, or the device itself, may cache some data, so the File Manager
- ; cannot guarantee that all data has actually been written to the underlying media.
- ;
- ;
- ;
- ;
- ;
- ; extern OSStatus FSObjectFlush(FSObjectRef object_t)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectFlush
- ENDIF
-
- ;
- ; extern OSStatus FSObjectFlushAsync(FSObjectRef object_t, const KernelNotification *completion_i, MessageID *requestID_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectFlushAsync
- ENDIF
-
- ;
- ;============================================================================
- ; Request Cancellation Routines
- ;============================================================================
- ;
- ;
- ;
- ; extern OSStatus FSRequestCancel(MessageID theRequestID_i)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSRequestCancel
- ENDIF
-
- ;
- ;============================================================================
- ; Object Property Sizes
- ;============================================================================
- ;
- ;
- ;
- ; extern OSStatus FSObjectGetForkPropertyPhysicalSizes(FSObjectRef object_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], FSBufferDescriptor *propertiesBuffer_o, FSBufferDescriptor *statusBuffer_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectGetForkPropertyPhysicalSizes
- ENDIF
-
- ;
- ;
- ; extern OSStatus FSObjectGetPropertySizes(FSObjectRef object_t, ItemCount propertyCount_i, const FSPropertyDescriptor properties_i[2147483647], FSBufferDescriptor *propertiesBuffer_o, FSBufferDescriptor *statusBuffer_o)
- ;
- IF GENERATINGCFM THEN
- IMPORT_CFM_FUNCTION FSObjectGetPropertySizes
- ENDIF
-
- ENDIF
- ENDIF
- ENDIF ; __FILEMANAGERSPI__
-
-